Communication coordinator for messages to be sent from at least one data source to a plurality of clients

ABSTRACT

A computer has access to a number of data items available from at least one data source. The computer receives requests for the values of certain of these data items from a number of different clients which may be either devices external to the computer or application programs operating in a multitasking environment within the computer. As each request is received from a client, it is stored in a data item table. The computer replies to each client request in the data item table with a data item value available somewhere in the data item table. The computer updates older data item values held by the data item table by requesting those data item values from the data sources which provide them. The data item values supplied to clients are those from previously received data source replies if these replies are not too old. This reduces the number of requests for data item values which the data sources must handle, reduces traffic on a data link which might otherwise be overloaded, and reduces the delay in responding to client requests.

BACKGROUND OF THE INVENTION

With the decreasing cost and increasing power of microcontrollers, ithas become common to use them as individual processing modules for allsorts of complex information gathering, processing, and displayingfunctions, as well as for controlling the operation of systems of alltypes. Microcontrollers are typically used in two different ways. In thefirst of these, they are embedded in a system along with ROM (read onlymemory) in which dedicated software instructions are permanently held,and with a modest amount of RAM (random access memory) for holdingoperand values for short periods of time. An embedded microcontrollerand its software usually comprise only a single processing module. Thesemicrocontrollers are also used as the processing element in theextremely common personal computers having large disk memories, a largeRAM, and a keyboard and display unit for communication with a human. Apersonal computer can hold a number of separate software applicationsand operate these more or less simultaneously in a multitasking mode. By"multitasking" is meant that instruction execution proceeds for onesoftware application for a period of time, and then is transferred toanother application. An external event or simply the passage of aprescribed period of time may transfer execution of instructions fromone to another application. The appearance is thus created that a numberof multitasked applications are operating simultaneously, even thoughtwo instructions from two different applications are typically notexecuted precisely simultaneously. Each of the multitasked applicationscan be considered a separate processing module, in that each has anindependent existence. As a practical matter, it is frequently possibleto perform a particular function with a processing module of either ofthese types.

It is common to employ a number of these processing modules in a singlesystem, each of them dedicated to a specific function or group offunctions. These processing modules may each comprise a separatemicrocontroller. It is also possible to have a number of differentsoftware applications of a single system operating in this multitaskingmode within a single microcontroller, each software application alsocomprising a processing module. It is also possible to have a hybridsystem, comprising a personal computer with a number of software typesof processing modules along with a number of embedded microcontrollersalso performing functions in the system. There are a number ofadvantages in dividing the computing burden in this way. Some functionsare more effectively performed with one type of processing module, somewith others. It is possible that there are uses for certain types ofprocessing modules in different types of systems, and by modularizingthe function, can be more easily transferred between the systems. Also,modular systems can be more easily analyzed when the inevitable errorsarise, in that there are well-defined inputs and outputs lendingthemselves to easier access.

In order to coordinate the activities of these processing modules, it isuseful to connect the individual processing modules of a larger systemwhich perform these functions in a way which allows transfer of dataamong the processing modules. Where these processing modules areseparate microcontrollers, they may be interconnected by cabling overwhich data is transferred. Many different types of arrangementspermitting efficient and reliable transfer of data between a number ofembedded or stand-alone processing modules have been designed. Thisproblem is not trivial. Where the processing modules are multitaskedsoftware applications, it is of course possible to establish protocolsallowing these processing modules to communicate with each other. Sinceonly one at a time is typically active, the problem is somewhat simpler.

The data involved will typically indicate some quantity or value towhich the processing module has access say through external sensors orwhich the module generates during its processing operations. This datawill typically comprise discrete elements, and each of these elements ofdata will be referred to as a data item. For example in an environmentcontrol system, ambient air temperature may be a data item. Status, openor closed, of a valve controlling flow of fuel or refrigerant may beanother data item. The result of a calculation may be another example ofa data item. A data item may be generally considered to be a particulardata element which has some digital value. A data item will typicallyalso have an identity code which uniquely identifies it, since a sourcefor a data item value may well be able to provide a number of differentdata items values.

As a system becomes more complex, the number of data items availablewill usually become large. In most cases, one processing module willhave need for only some of the data item values which another of theprocessing modules has available. For example, a furnace controller maynot need to have access to the temperature of the controlled space. Allthat it may need from the temperature control processing module is ademand flag which is set whenever the furnace must operate. One way toaddress the problem arising from transferring data unnecessarily betweenprocessing modules is to establish the protocol that one processingmodule will transmit a data item value to another only when requested.To follow the example from above, the furnace controller may request thedemand flag data item every second or so from the temperaturecontroller, and then based on its value will start up, shut down, orcontinue the current status of the furnace. In such a system, theprocessing module initiating a request signal is known as the client,and the processing module to which the request signal is sent is knownas the data source, or simply "source". In an appropriate system, aparticular processing module may be a client with respect to one requestsignal and a source with respect to another.

As the communication and control required by physical systems havebecome greater, the connections between the processing modules involvedwith these systems have become increasingly complex. If there are alarge number of either clients or sources, it is not practical to haveindividual data paths from each of the modules to every other module.The situation may be complicated even more by the fact that the repliesfrom data sources to requests may proceed very slowly compared to theinternal speed of the clients because of high traffic levels on the datapaths involved or because of slow processing speed for one or anotherreason on the part of the data source. The fact that individualprocessing modules may be physically spaced a substantial distance fromeach other and connected by a telephone modem is one obvious cause forslower speed. For all of these reasons, it has been found that it issometimes more efficient to route all of the requests for data items andthe replies to them through a single processing module. This routingfunction is one made to order for the high data handling capabilities ofthe small and cheap but powerful desktop computers now available. Whereat least one of the processing modules in the system is alreadyimplemented within a desktop computer, it is convenient and cheap todevise a processing module which operates within that desktop computer,for directing and routing processing module communications.

The computer in which operates the processing module redirecting theclient requests to the various sources and receiving and replying withthe data item values, will be called the server computer, whetherserving as the host for clients or data source applications or not. Thatis, in the case where client or source processing modules aremultitasked software applications, the host computer in which the clientor source applications execute may also be the server.

These host computers use an operating system of some type to accomplishthe various communication and control functions which are a necessaryadjunct to the application programs. For the IBM compatible types ofcomputers, the most widely used of these operating systems is DOS. It isnow usual for the more powerful types of these computers to use a higherlevel graphics-based operating system to accomplish many of thesecommunication and control functions. For IBM compatible computers, thisgraphics-based operating system is known as "Windows". The function setavailable from the Windows operating system is much larger than that ofDOS, but Windows uses many of the functions in DOS in implementing itsown functions. Both DOS and Windows include a number of utility routineswhich are available to all of the application programs to perform commonsoftware communication and other functions, thereby freeing each of theusers from having to individually replicate these frequently usedfunctions. Certain of these utility routines will be mentioned in thedescription which follows.

The Windows operating system, recognizing the need for communicationamong the applications resident in the host computer, includes afunction known as Dynamic Data Exchange (DDE) which allows oneapplication program to request data items from another. In thisfunction, an application provides a request to the Windows systemidentifying another application and the data item desired from it. TheWindows system DDE function then requests that data item from thedesignated application, and responds to the requesting clientapplication with that data item. A protocol is provided for thisfunction which specifies such matters as formats of requests andreplies, timing requirements, and error management. DDE data requestsare of two types. One type is called a cold link, where a client requestrequires only a single response. The other type is a hot link, where asingle request causes an immediate response, and then further responsesat intervals specified by the hot link request, until the requestingclient closes down the hot link request. Since each hot linkperiodically requires additional processing time, it is in noapplication's interest for a hot link to exist if unneeded. Therefore,as the need for a particular data item disappears, the requestingapplication should close down the hot link request, and this iscustomary.

The DDE function is intended for use where the data links between boththe clients and the sources are host computer software processingmodules, and therefore relatively fast. We have found that the DDEmechanism can also work reasonably well in a situation where therequested information is provided by the external sources mentionedabove, rather than by application programs within the host computer. Inone situation, the routing computer may be considered to include asingle multiplexer or gateway to which is connected a number of datasources, each of which can have a relatively large number of data itemsavailable. A request (hereafter "source request") supplied to thegateway specifies the data source connected to the gateway and thespecific data item value desired from that gateway. The gateway willsend its own request to the specified data source and receive in replythe data item value from the data source in a data source reply. Becauseof the relative slowness of replies from the individual data sources andthe extra gateway stage for both request and reply however, there is asubstantial delay of at least several tenths of a second, and perhapseven several seconds, for the server to receive the data source replysent in response to each request.

If client requests are relatively infrequent and the data link to thesource is fast, the server can provide the requested information toclients relatively promptly. When a client request arrives, the routingcomputer simply sends the appropriate data source request via thegateway to the source from which the data item value is available. Whenthe data source reply is returned to the routing computer, it passes thedata item value therein on to the requesting client per the usual DDEprocedure. Each data source reply includes a number of other parameters.These identify the data item value, the client which originated theclient request to which the reply is directed, etc.

The server must be able to deal with the situation where a number ofclient data requests are pending at a particular time. This happensfrequently where the gateway is of the type which accepts only a singlesource request at a time, but it can also happen where the volume ofclient requests exceeds the processing speed of the gateway. In such asituation, replies to client requests are delayed, perhaps to an extentwhere the data item value is worthless to the client when it is finallyreceived. In the situation where the long term rate of client requestsis greater than the capacity of the gateway or data sources to respond,then client requests will simply be lost since the table in which theyare stored can have only finite capacity, and the entries will continueto grow. Thus, it would extremely valuable to be able to limit thenumber of source requests without limiting the number of replies sent tothe clients.

BRIEF DESCRIPTION OF THE INVENTION

It may not be possible to speed up the data paths or the gateway linkingthe server computer and its clients to the data sources, and yet it ispossible in many cases to provide data item values in a more timelymanner to many of the clients by using the apparatus of this invention.We have found that in many of these types of systems, duplicate requestsfrom different clients for the same data item occur relatively close intime to each other. We have further found that it is sometimesacceptable to answer all of these duplicate requests with the valueprovided in response to a single reply from a source for a data itemvalue. The apparatus and method of our invention recognize thissituation and allows a single data request from the routing computer tothe data source for the data item involved to provide the data itemencoded in the response to each of a number of the client requests forthat data item.

Our invention is an improvement in a communication system for supplyingvalues for data items each having its own identity code and eachavailable from a single one of at least one data source, to each one ofa plurality of clients each having its own identity code. Each of theseclients requests the data item values by transmitting client requestsignals encoding the identity codes of the data items and the clientidentity code to the server or data item router on a client data link.The client data link allows for two way communication directed betweeneach client and the server or router. A source data link allows two waycommunication between each data source and the server. Each data sourceprovides to the server on the source data link a source reply signalencoding a data item value and the data item identity code for that dataitem responsive to a source request signal provided on the source datalink by the server to the data source from which that data item's valueis available. The source request signal sent by the server encodes theidentity code of the data item desired.

The server includes a processing unit and a data memory. The processingunit can store data in and retrieve data from the data memory. Inparticular, the processing unit can transmit to, and the data memory canrecord, a data item table and a request table each comprising aplurality of entries. Each of these tables is built up an entry at atime by the processing unit. Each data item table entry is associatedwith a data item identity code and records a data item value, and eachrequest table entry records a client identity code in association with adata item identity code. The processing unit can also retrieve thecontents of the individual entries from each of these tables byappropriate searches or other access based on a key such as the identitycode of a particular data item.

The activity of the processing unit is controlled by softwareinstructions which may be stored in a part of the data memory or in aseparate instruction memory which may be a so-called read only memory(ROM). The individual means to be described in the following materialswill preferably be a part of the processing unit and thus implemented insoftware, since software means create the necessary functions moreefficiently. However, the means may also be implemented in hardware onlyor be a combination of both hardware and software. Where the inventionis implemented as software controlling the processing unit operation,the client data links and the source data links may comprise a part ofthe internal data transfer paths of the processing unit and also a partof its internal memory elements.

The invention includes a request table means connected to the clientdata link and receiving each client request signal. The request tablemeans records in an entry in the request table for each client requestsignal, the identity code for the client supplying that client requestsignal in association with the identity code of the data item in thatclient request signal. The invention also includes source request meansfor scanning the request table and for issuing source request signalsencoding the data item identity codes recorded in the request table.

Further, there is a data item value means connected to the source datalink and receiving the source reply signals. The data item value meansrecords in an entry in the data item table in association with the dataitem identity code encoded in each source reply signal, the data itemvalue encoded in that source reply signal. There is also a data itemreply means connected to each client data link for scanning the requesttable, and for issuing a plurality of client reply signals on the clientdata link. Each of these client reply signals encodes a data item valuerecorded in the data item table and is directed to a client whoseidentity code is in the request table.

In a preferred embodiment, this communication system further includes aclock providing a clock signal encoding a time value comprising the timeof day and the identity of the day. The typical personal computerincludes an internal clock which serves this function. In thisembodiment, the data item value means further comprises time stamp meansreceiving the clock signal for recording in the data item table inassociation with the data item whose identity code is encoded in asource reply signal, the time value encoded in the clock signal at thetime the source reply signal was received. The data item reply meansincludes age value means for calculating an age value equal to thedifference of the time value encoded in the clock signal and the timevalue recorded in the data item table in association with a data itemwhose identity code is recorded in the request table. The age valuemeans also issues a client reply signal encoding the data item valuerecorded in the data item table in association with that data itemresponsive to the time value encoded in a valid item signal exceedingthe age value calculated for that data item. The data item reply meansalso includes valid item means for issuing a valid item signal encodinga valid item time value.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating the major elements of theinvention as embodied by a typical small computer.

FIG. 2 is a flowchart of object code for loading in such a computer tocause it to comprise a part of an interrupt processing element.

FIG. 3 is a flowchart of object code for loading in such a computer tocause it to comprise a means for entering into the data item table, adata item request supplied by a client.

FIGS. 4A-4C in combination form a flowchart of object code for loadingin such a computer to cause it to comprise a means for supplying thevalue of a requested data item to the requesting client.

FIG. 5 is a flowchart of object code for loading in such a computer tocause it to comprise means for processing an interrupt announcing a datavalue-containing reply from a data source.

FIG. 6 is a flowchart of object code for loading in such a computer tocause it to comprise means for requesting the value of a data item froma data source.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates the broad outline of the invention as it might beembodied in a small computer 10 such as those based on themicrocontrollers commonly used in the personal desktop and laptopcomputers now widely available. The invention is implemented by means ofsoftware instructions which form a part of the preferred embodiment ofthe invention. The various means shown in this block diagram aremomentarily created by execution of these instructions. That is, thecomputer 10 momentarily becomes each of these means as the appropriateinstructions are executed. While computer 10 executes instructions whichconfigure computer 10 as one of these means, computer 10 actuallybecomes these means, and then becomes some other type of element,perhaps not even part of this invention.

Computer 10 is shown as conventionally comprising three main parts, aprocessing unit 12, a data memory 14, and an input/output (I/O) unit 17.Three clients 21-23 are shown as connected for two way communicationwith processing unit 12 on a client data link having an output (withrespect to processing unit 12) path 37 and an input path 36. Each client21-23 may have its own data link or the clients may share a single datalink in some way. The two sections of the input and output paths 36 and37 shown passing through the I/O unit 17 are connected to external (tothe computer 10) clients 22 and 23. Showing the input and output paths36 and 37 as passing through the I/O unit 17 symbolizes that clients 22and 23 are external to computer 10. Client 21 is internal to computer10, so the input and output paths 36 and 37 are shown as directlyconnected with client 21. As an internal client, client 21 is a softwareprogram which operates in a multitasking mode, sharing time with otherclients not illustrated in FIG. 1 as well as with the individual meansshown within processing unit 12 as forming the invention itself. Clients21-23 provide on the input paths 36 of their data links, messagesencoded in client request signals which specify the sources which are toprovide data identified in the client request messages as well asspecifying other information related to the way in which each clientrequest message should be processed. Each client request messageincludes a number of parameters which specify the data item whose valueis desired and the conditions under which this value is provided.Clients 21-23 receive client reply signals encoding the values of thedata items specified in the client request signals.

A gateway element 53 serves as an interface unit between computer 10 anda number of data sources 56-58 which transmit the data values to gatewayelement 53 on paths 60-62 respectively. In a sense, gateway element 53itself forms a data source which performs a multiplexer function insupplying requested data values to processing unit 12. Gateway element53 is connected to the processing unit through a source data link havingan output path 43 and an input path 42. Gateway element 53 willtypically have its own microcontroller which will interpret sourcerequest messages provided on path 43. These paths 42 and 43 are shown aspassing through I/O unit 17 and connected to various of the means withinprocessing unit 12. This is meant to symbolize that gateway 53 isconnected to a standard port of the computer 12. Each data source 56-58has a unique address which identifies it.

Each data source 56-58 may itself also include a microcontroller forcontrolling operation of a physical process of some kind, or may on theother hand be nothing more than a sensor or group of sensors connectedto a gateway element 53 which provides as data item values, the sensednumeric values of varying physical parameters such as temperature,pressure, etc. The term "data item" will be used hereafter to generallyrefer to the identity of a particular parameter having a varying valueto be supplied from the data sources 56-58 to the clients 21-23. A dataitem need not be a physical parameter, but may also be a digital codevalue indicating the status for some condition in a physical process,such as presence of flame in a burner, on or off status of a switch,etc. A data item may also be a computed numeric value such as operatingefficiency, mean or standard deviation of a sample, etc.

Gateway element 53 supplies a data item value in a source reply messagein response to a message encoded in a source request signal carried onpath 43 and supplied by a source request means 39 forming a part ofprocessing unit 12. Each source request message includes a data itemidentity code which includes the address of the data source 56-58 andthe address within the data source 56-58 if appropriate, from which thevalue of the particular data item is available. The data item identitycodes supplied to gateway 53 in source request messages were previouslya part of client request messages received from the clients 21-23, andit is from these client request messages that the data item identitycodes contained in the source request messages originate.

As explained above, it is likely that the time required for gatewayelement 53 and a data source 56-58 to supply a requested data item valuemay be several tenths of a second or even longer, which is quite a longtime relative to the processing speed of modern desktop computers. Ifthere are large numbers of data item values which must be suppliedthrough the gateway 53, these response times can cumulatively impact theperformance of the system. This invention addresses these time delays byreducing the number of requests which gateway 53 must handle.

Processing unit 12 executes groups of software instructions, and by sodoing the various means shown in FIG. 1 are caused to exist for periodsof time. Since the instruction processing resources of the computer 10are directed from one task to another as part of the multitaskingoperation, these means will typically exist only for brief periods oftime. Each means comes into existence when an interrupt occurs whichtransfers instruction execution to the instructions which transformprocessing unit 12 into that means. The term "interrupt" refers to thetransfer of instruction execution to an out of sequence address inresponse to a condition not directly arising from the execution of aninstruction. These means are shown communicating with a data item table65 and a request table 68, each of which form a part of the data memory14. Data is transferred to and from the data item table 65 and therequest table 68 on data paths 46 and 47 respectively and which form apart of the internal data paths within computer 10 between its memory 14and its processing unit 12. These paths 46 and 47 are shown indicatingthe presence and direction of data flow between each of these means whenit is in existence, and the data item table 65 and request table 68.Although a number of data paths 46 and data paths 47 are shown, therewill typically be only a single one of each which allows processing unit12 to communicate with data memory 14. As the individual means come intoexistence, the data paths shown connected to those means will carry dataas shown to the data item table 65 and the request table 68.

The data item table 65 and the request table 68 each comprise a numberof individual entries. Each of these entries when active record theparameters relating to a single client request signal. Each entry isaccessible by use of an index value which specifies the position of theentry in the table. This is well known by those with even moderate skillin software development, but should be mentioned because the followingdiscussion of the flowcharts which allow implement of the invention bythose with ordinary skill in these arts, makes extensive use of thisindexing procedure. The index to a table comprises an identifier whichdesignates a single entry to that table. In the data item table 65, thecombination of a data item identity code and a client identity code alsouniquely identifies a single entry. By searching the entire data itemtable 65, it is possible to use the combination of the data itemidentity code and the client identity code as an identifier whichdesignates a single data item table 65 entry. Because of the largeamounts of searching required to use such an identifier, we prefer thesimpler and faster indexing approach. In the request table, the dataitem identity code itself uniquely identifies an entry and may be usedas the identifier. Since the request table 68 is much shorter table, itis possible to use the data item identity code as its entry identifieralthough here too, use of an index is faster and more straightforward.

A portion of data memory 14 also typically comprises an instructionmemory which stores the software instructions whose execution causeprocessing unit 12 to comprise the various means shown in FIG. 1 as wellas software for performing other tasks. In an actual embodiment, thedata memory 14 will typically comprise both a disk drive and RAM (randomaccess, i.e. semiconductor, memory). During execution of theinstructions which comprise this invention, the request table 68 and thedata item table 65 will typically be held in RAM, and then when adifferent application is to be executed, will be re-recorded in the diskdrive portion of data memory 14. The disk drive portion of the memory isnon-volatile, meaning that loss of electrical power will not cause lossof the data recorded therein.

Each active entry of the data item table 65 stores a number ofparameters relating to a single client request signal. A partial list ofthese parameters includes: the identity code of the client whichgenerated the item; the data item identity code associated with theentry; the most recent value of the data item and the time received; theupdate time, i.e., the time at which the client should receive a clientreply signal for the entry's data item; and the update interval, i.e.,the time interval between these client reply signals. Except for thedata item values, the times at which the data item values are received,and the update times, all of these data item table 65 parameters aresupplied by the client request signals. As noted above, the combinationof data item identity code and client identity code in a data item table65 entry is unique.

The interrupts which were mentioned above as initiating the existence ofthe various means shown as forming a part of processing unit 12, onoccasion arise from passing of time. Clock 27, a hardware element ofprocessing unit 12, plays an important part in this activity. Clock 27provides on a path 50 a clock signal which encodes the date and the timeof day. When a previously stored value in a time interrupt register 28matches the time value provided by clock 27 on path 50, instructionexecution is transferred to instructions in a first address andaddresses following of the instruction memory which contain instructionsassociated with the value in register 28. Executing these instructionscauses processing unit 12 to comprise a client reply means 52.Interrupts arising from a match of the clock signal on path 50 and thecontents of the time interrupt register 28 are called time interrupts.The values stored in the time interrupt register 28 are set so thatprocessing unit 12 executes the client reply means 52 instructions atregular intervals, and in fact in the preferred embodiment, the value intime interrupt register 28 is updated by instructions implementingclient reply means 52 itself.

The contents of time interrupt register 28 are arranged to periodicallycause the instructions of client reply means 52 to be executed. Theseinstructions cause processing unit 12 to scan the data item table 65 anddetect each entry in which is an update time indicating that a reply tothe client is due, that is, the entries whose update time is less thanthe current time. If a sufficiently new (i.e., young) value for the dataitem is available within the data item table 65, the client reply means52 instructions immediately use this value to reply to the request. Ifnot, the client reply means 52 issues a signal on path 46 which insertsin an entry of request table 68, the index of the data item table 65entry whose update time is now due. However, before entering this dataitem in request table 68, client reply means 52 searches request table68 for this index and if found, does not enter this index in requesttable 68, thereby preventing any data item from appearing in the requesttable 68 more than once. After the scanning of data item table 65 iscomplete, the client reply means 52 transfers execution of instructionsto the addresses containing the instructions which implement sourcerequest means 39. This branching to the source request means 39instructions is symbolized by dotted line 49.

External events can also generate signals which create an interrupt.Typically, these external or event interrupts are accompanied by amessage which comprises parameters defining operations which theprocessing unit 12 is requested to perform by the interrupt. In ourembodiment of the invention, an event interrupt forms a part of both aclient request signal from one of the clients 21-23 and a source replysignal from gateway element 53. (While the interrupt generated byinternal client 21 is not technically an external interrupt, it can behandled in the same manner, and hence the interrupts from these clientswill not be distinguished.) The event interrupt with each client requestsignal causes processing unit 12 to temporarily comprise a clientrequest means 29. The interrupt forming a part of each source replysignal causes processing unit 12 to temporarily comprise source replymeans 33. As the client request means 29, processing unit 12 stores theparameters in the message encoded in each client request signal in anentry of the data item table 65 associated with that client requestsignal. By so doing, this data item table 65 entry becomes active. Theseparameters allow data item values to be properly requested from the datasources 56-58 and replies encoding these data item values to be properlysent to clients 21-23. There are two types of client request messages. Acold link message has its cold link flag set, and requires only a singleclient reply message for the specified data item value. The data itemtable 65 entry for a cold link request is deleted as soon as the clientreply message for that client request message has been sent. If the coldlink flag is not set, the message is a hot link message, meaning thatclient reply messages are sent at intervals specified in the clientrequest message or when the data item value changes. A further functionof the client request means 29 provides for deleting hot link entriesfrom data item table 65. Presence of a delete flag in a client-requestmessage specifies that the data item table 65 entry for the clientrequest message's client and data item is to be deleted.

As the source reply means 33, processing unit 12 receives the sourcereply signal on path 42 from gateway 53. The source reply signal isprovided in response to a previous source request signal. The messageencoded in each source reply signal includes a previously requested dataitem value which the source reply means 33 stores in the data item table65 entry whose index is also encoded in the source reply message. Thetime of day when the source reply signal is received is also stored inthe data item table 65 entry specified by that data item table index,and the clock signal on path 50 is provided to the source reply means 33for this reason. After the instructions which cause processing unit 12to comprise source reply means 33 have been executed, instructionexecution is transferred to the instructions which implement the sourcerequest means 39, as symbolized by the dotted lines 48 which connectmeans 33 to source request means 39.

In the embodiment for which this invention has been currently designed,gateway element 53 can process only one source request message at atime. Thus, the source reply message for each source request messagemust be received before the next can be sent. The instructions forsource request means 39 cause processing unit 12 to search the requesttable 68 for any entries holding a data item index for which a sourcerequest message is not pending. Source request means 39 selects the oneof these entries in table 68 having the oldest (smallest) update time inits corresponding data item table 65 entry, and issues a source requestmessage to gateway element 53 on path 43 which includes the data itemidentity code in the data item table 65 entry associated with thatrequest table 68 entry. Each request table 68 entry is deleted aftergateway element 53 has supplied the corresponding source reply messageto the source reply means 33.

It is also possible to adapt this invention to operate with a gatewayelement 53 capable of processing a number of source request messagessimultaneously. In such apparatus, it is necessary to maintain a counterwhose contents currently indicate the number of pending source requests,so as to not exceed the capacity of gateway 53. This invention may alsobe implemented with a number of gateway elements, each connected to itsown data link.

One can see that the likelihood that a particular data item value isaccurate will tend to decrease with the passage of time. It is thereforenecessary to provide for each data item a valid data interval valuewhich defines the time interval following the instant when a data itemvalue is received during which the data item value will be deemedacceptably fresh. In the preferred embodiment, the update interval indata item table 65 entries also serves as the valid data interval duringwhich each data item value is presumed to be correct for the purposes ofthe client 21-23 involved. It is, however, also possible to use for thisvalid data interval a single value assigned to all of the data itemtable 65 entries and which will then presumably be different from atleast some of the update intervals. The software may also be designed toallow the client to separately specify in the client request message thevalid data interval for a data item value. However the valid datainterval is defined, the client reply means 52 examines each data itemvalue which is available in the data item table 65, and if it wasreceived before the start of the valid data interval in the data itemtable 65 entry for that data item, the client reply means 52 inserts anew entry in the request table 68 which will sooner or later result in asource request message to gateway element 53 for that data item. In thisway, the data item values provided to each client 21-23 will be updatedat a rate which assures a level of freshness which the client 21-23involved has specified as adequate.

In general, this apparatus will at worst generate requests to gateway 53for a particular data item value only slightly faster than for theclient request signal for that data item value having the shortestupdate interval. In this way, traffic on the connection between theserver and the various data sources is minimized, and at the same timerelatively fresh data is supplied to the client. While the data itemvalues supplied from the responses to other client request signals maynot be as fresh as if they had resulted from source request messagesinitiated from the data item table 65 itself, they will usually besupplied more promptly than if a source request message were to beissued for each client reply message required. Our invention canfrequently compensate for slow response times in gateway element 53 andits data sources 56-58. By setting the update intervals for clientrequests properly, it is possible to provide reasonable assurance thatthe data item values supplied to clients will be sufficiently fresh andfrequent for the purposes of the client involved.

As mentioned already, the invention shown in FIG. 1 is preferablyimplemented as a properly programmed computer 10. It is thereforeappropriate to present the detailed embodiment in terms of the softwareor object code which configures computer 10 as the various elementsshown in FIG. 1. Since the structure and instruction format of thesecomputers differs from type to type, it is most helpful to describe thesoftware by means of the generic software structure. One universallyaccepted form for defining the structure of software is by flowchartsfrom which those having ordinary skill in the art can develop the sourceand object codes for a particular computer allowing the practice of theinvention. The following description explains the operation of acomputer 10 which executes software constructed according to theflowcharts of FIGS. 2-6.

Regardless, it is important to remember that the computer 10 itselfphysically comprises the invention once object code written according tothe flowcharts whose description follows, has been loaded and then isexecuted by the computer. That is, object code following theseflowcharts controls the operation of the computer 10 so as to transformit in a way causing it to actually comprise the invention shown inFIG. 1. Object code comprises the individual instructions which areexecuted or interpreted by the computer in order to process data whichit receives from external sources. As such, this invention has physicalexistence in the form of such a properly programmed computer. As wasmentioned earlier, this object code is stored in a portion of the datamemory 14, and this portion of the data memory 14 therefore also forms apart of the various functional means shown in FIG. 1 and included in theclaims. Some computers have a special instruction area of their memory14 in which the instructions may be stored. Others use the area inmemory 14 in which data is stored to also store the object code. At anyrate, one may consider the various means shown in FIG. 1 as physicallycomprising the portion of data memory 14 in which the object code isstored as well as the circuitry of processing unit 12 which actuallyexecutes the instructions forming this object code.

In the flowcharts which follow, we have followed more or less standardflowcharting conventions. Each block with straight sides represents oneor more instructions which specify predetermined actions by thecomputer. Lines connecting these blocks indicate by their arrows thesequence of instruction execution. Rectangular blocks such as at 132(FIG. 3) are generally activity elements indicating instructions whichcause the computer 10 to comprise means for manipulating or alteringdata held within the memory 14. Hexagonal blocks as at 129 (FIG. 3) aredecision elements representing instructions which may alter the sequencewhich further instruction execution follows depending on the result ofthe indicated test on data held within the memory 14. Small circles asat 121 in FIG. 2 symbolize an position in an address sequence where theexecution of instructions which proceeds along at least two differentpaths merges with execution continuing along a single path.

FIG. 2 represents the instruction executions which process theinterrupts whose occurrences start execution of the instructions wherebycomputer 10 becomes the invention. The occurrence of a particularinterrupt transfers instruction execution to the instruction in theaddress associated with that interrupt, thereby initiating the sequenceof instruction execution by computer 10 which causes it to become one ofthe means-type elements of the invention shown in FIG. 1 for a period oftime. The time interrupts cause the instructions which the flowcharts ofFIGS. 4A-4C represent to be executed. The event-based interrupts causethe instructions which the flowcharts of either FIG. 3 or 5 represent tobe executed. Typically, processing unit 12 has the capability to recordthe address of the instruction which normally was to have been executedat the time of the interrupt, and return execution to that address uponexiting from that task's instructions. It is conventional to store allof the processing unit 12 register contents at the time each interruptoccurs so as to be able to continue with instruction execution at alater time as though the interrupt had not occurred, by restoring thesevalues and branching to the address recorded at the time of theinterrupt. If a second interrupt occurs during the task which the firstinterrupt invoked, the processing unit 12 has the ability to stackand/or prioritize the interrupts, so that all tasks are performed andperformed in the most appropriate order. These interrupt processingcapabilities will be assumed hereafter.

When an interrupt is first detected, it is important that anotherinterrupt not immediately cause a further alteration in the instructionexecution sequence. Thus interrupt processing shown in FIG. 2 startswith an instruction represented by activity element 100 which locks outfurther interrupts at least of the type which has just occurred. In manytypes of processing units, this lockout function is automaticallyactivated with the occurrence of an interrupt and a programmed interruptlockout instruction is unneeded. After interrupt lockout, instructionsof element 102 cause a test of the type of interrupt, time orevent-based. In most types of computers, the type of interrupt is"tested" by virtue of the memory 14 address to which instructionexecution is transferred. A time-based interrupt causes instructionexecution to take path 105 and continue with the activities of ascheduler 110. Scheduler 110 contains activity elements representinginstructions which perform the various activities necessary to causeeach of the time interrupt tasks to be performed at the appropriatetimes. While only one of the tasks which implement this invention istime-based, there will typically be other tasks as well which areinitiated by a time interrupt.

Within scheduler 110, a selector element 112 symbolizes the instructionswhose execution cause processing unit 12 to further select the task forexecution whose scheduled time caused the current interrupt. Forpurposes of this invention, there is only the single client reply tasksymbolized by activity elements 113 and 116, but there may be a numberof other tasks as well which are performed in response to timeinterrupts. The task selection activity of element 112 can be done in avariety of ways, each of which are well known to skilled softwaredesigners. Depending on the outcome of this selection activity,instruction processing continues with either activity element 113 ininitiating one of this invention's tasks, or another task symbolized bythe flow line 117. The instructions represented by activity element 113update the interrupt time for the next execution of the client replytask and then release the interrupt lockout. It is preferred to releasethis interrupt lockout before actually executing the selected task toallow any further interrupts to be sensed and appropriately handled.

The instructions which activity element 116 symbolizes are executednext, and cause the client request task of FIGS. 4A-4C to be performed.This task corresponds quite closely to the client reply means 52 of FIG.1, although its functions are presented in much more detail in FIGS.4A-4C. When the client reply task has been completed, instructionexecution continues to connector element G 121 which symbolizesbranching to the source request task of FIG. 6. The source request taskis the software analog of source request task 39 in FIG. 1.

Event-based interrupts direct operation along path 103 which causes thetask selector element 120 instructions to be executed. Again, the taskselection function may be nothing more than branching to the address ofthe first instruction of the task to which the interrupt is directed. Asmentioned above, it is customary that each event-based interrupt isaccompanied by a message which specifies parameters to be used by thetask which the interrupt invokes. Typically, there is a prearrangedportion of memory 14 in which this interrupt message is available to theinstructions of the task selected by the event interrupt action. Ofcourse, there is also a prearranged format for each interrupt messagewhich allows the task to process the message. In implementing theinvention, the instructions which interpret the event interrupts selecteither a data source reply interrupt task 122 or a client requestinterrupt task 125. These two tasks cause the processing required by therelated interrupt. Task 122 represents instructions causing processingunit 12 to handle the messages from data sources 56-58 containing theindividual data item values and generally causes processing unit 12 tofunction as source reply means 33 of FIG. 1. Task 125 handles themessages from clients 21-23 requesting individual data item values andrepresents the activity of client request means 29 of FIG. 1. Task 122represents the software elements shown in FIG. 5 and task 125 representsthe software elements of FIG. 3. After the processing of either of tasks122 or 125 has been finished, the interrupt lockout is released byexecuting the instructions of activity element 127, after whichinstruction execution proceeds to connector element G 250 of FIG. 6,which is the flowchart for the instructions implementing the sourcerequest means 39. Task 122 represents instructions which formatprocessing unit 12 as source reply means 33 of FIG. 1, and task 125represents instructions which format processing unit 12 as clientrequest means 29. Since each of these tasks involve communication withan external device, it is important that the operation proceed withoutinterruption. And since each of these tasks can be accomplishedrelatively quickly, it is also feasible to lock out other interruptsuntil the processing is complete for these tasks.

Turning to FIG. 3 first in further explaining the operation of thisapparatus, the instructions which the elements therein represent receiveand process the request messages supplied from the clients. The clientrequest message from a client 21-23 which generates the interrupt totask 125 encodes the parameters which define the client reply messages,and as previously explained, is available to task 125 in someprearranged portion of memory 14. These parameters are stored in thedata item table 65. It is convenient to tabulate them as they arereferenced in the flowcharts in the following table, along withparameters recorded in the data item table 65 which are derived fromother sources. Parameters with asterisks are derived from sources otherthan the client request messages.

    ______________________________________                                        DATA ITEM TABLE DEFINITION                                                    Parameter   Description                                                       ______________________________________                                        D.I. ID. code                                                                             Data item identify code which identifies                                      the data item and data source for the                                         associated value                                                  Client ID. code                                                                           Code which identifies the client which has                                    requested the value of the entry's data                                       item                                                              Update interval                                                                           Nominal time between successive client                                        replies for a particular data item code                           Valid data interval                                                                       Maximum age of a data item value which                                        can be sent in a client reply message; the                                    update interval is used as the valid                                          data interval in some embodiments                                 Timed rep. flag                                                                           Flag which when set specifies that a client                                   reply is to be sent each time the update                                      interval elapses, whether the data item                                       value has changed or not                                          Changed D.I.V. flag                                                                       Flag set when a new data item value from a                                    data source is different from the                                             previous value                                                    Delete flag Flag which when set specifies that the data                                   table entry for the data item and client                                      involved is to be deleted                                         Cold link flag                                                                            Flag which when set specifies a cold link                                     for the entry, i.e., that only one                                            client reply message is requested                                 *Next update time                                                                         The time at which the activity for                                            supplying a new data item value to the                                        client which requested it should begin                            *Data item value                                                                          The most recent value of the data item sent                                   to the client which requested it                                  *Time stamp The time in clock register 27 when the                                        current data item was received                                                from gateway 53                                                   ______________________________________                                    

Task 125 includes a first decision element 129 which tests the deleteflag forming a portion of the client request message, and if set,transfers execution to the activity element 145 instructions. Theseinstructions search data item table 65 and deletes any entry in the dataitem table 65 which holds both the same data item identity code as theclient request message does and the same client identity code as theclient 21-23 which sent the client request message. The instructions ofactivity element 147 are then executed to delete any entry in therequest table 68 which might have the data item table index of the justdeleted data item table 65 entry. This is necessary because, first ofall, a pending source request message generated in response to that dataitem table entry is no longer needed. And once an entry has been deletedfrom the data item table 65, the entry may subsequently be used byanother client request message. A value provided by a data source 56-58containing the data item table index for the deleted entry will thususually be for the wrong data item and will corrupt the parameters inthat data item table entry. Deleting the entry from the request table 68will prevent the parameters from a source reply message for a deletedclient request from being loaded into data item table 65.

If the delete flag in the client request message is not set, then thedecision element 130 instructions are next executed, also causing asearch of the data item table 65 for an entry having a data itemidentity code identical to that in the client request message, and theclient identity code for the client 21-23 which generated the interrupt.If such an entry exists, this implies that the current client requestmessage is intended to change the parameters for a pending clientrequest message for that data item value and which is from the clientwhich generated the present request. In such a case, instructions whichactivity element 132 represent, cause processing unit 12 to replace theparameters in the data item table 65 entry corresponding to the clientproviding the client request message and the data item identified inthat client request message, with the parameters in that client requestmessage. That is, the new client request message's parameters replacethose in the active data item table entry for the same data item andclient. Instruction execution then passes to activity element 142through connector element 133.

In the more usual case where the data item identity code and clientidentity code combination present in the client request message are notalready in an active data item table 65 entry, the instructions ofactivity element 137 are executed rather than those of activity element132. These instructions provide for inserting the parameters of theclient request message into the first available, i.e. inactive, entry ofthe data item table 65. Instruction execution then passes to theinstructions of activity element 142. The joining of flow sequence linesat connector 133 from elements 137 and 132 symbolize the furtherinstruction execution starting with the instructions of activity element142. At this point the data item table 65 entry defined by the currentclient request message's data item and client holds values for theparameters listed in the Data Item Table Definitions table above whichare supplied by the client request message.

Processing unit 12 next executes the instructions which activity element142 represents, which sets to zero the next update time value held inthe data item table 65 entry assigned to the present client requestmessage. Setting the next update time value equal to zero will cause aclient reply message for that data item table 65 entry to be sent assoon as possible. The instructions of activity element 142 also set achanged D.I.V. flag in the data item table 65 entry assigned to thepresent client request message. When set, this flag implies that thedata item value for the data item identity code recorded in the relateddata item table 65 entry has changed. Instruction execution next passesback to the interrupt processor connector element 126.

Turning next to the flowchart of FIGS. 4A-4C (which should be consideredtogether), these represent what is shown as client reply means 52 inFIG. 1 and task 116 in FIG. 2. Task 116 comprises the instructions whichselect the source for data item values and provide to the clients 21-23,the signals encoding client reply messages which contain these values.The general procedure which the instructions represented by FIGS. 4A-4Cfollow is to examine each of the active entries in data item table 65 tosee if a reply to the client request message which generated that entryin the data item table 65 is currently due. If so, then the data itemvalue either is selected from either this or another entry in the dataitem table 65 and sent in a client reply message to the client, or isrequested from a data source 56-58. To accomplish this examination, theactive entries in data item table 65 are sequentially designated as"current", starting with the first such entry. In point of fact, thisdesignation as "current" typically means nothing more than that a dataitem table 65 index holds a numeric index value which designates thecurrent entry in the data item table 65. The action of the instructionsof activity element 150 designates the first active data item table 65entry as current. After the initial current entry of the date item table65 has been selected and that entry processed, the data item table indexis advanced by the instructions of activity element 154 so as tosequentially designate each of the active entries in data item table 65as current.

After the first current data item table 65 entry has been designated,the instructions of decision element 159 are executed to test the nextupdate time value in the current data item table 65 entry. If this nextupdate time value is less than the current time (provided by clock 27and internally available to the software), this means that the nextclient reply message for that data item table 65 entry is now due to besent, and execution continues with the instructions for decision element165. If the next update time is greater than the current time, then theclient reply message is not yet due for the current data item tableentry, and execution continues with the instructions of decision element163 which follow connector element A 152. Decision element 163 testswhether all of the active data item table 165 entries have been examinedduring this execution of task 116 and if not continues execution toactivity element 154. Activity element 154 instructions designate thenext active data item table 65 entry as current. Typically this simplymeans that the index by which each entry of data item table 65 isaccessed is incremented to designate the next active entry. Theninstruction execution branches to connector element 156 so thatreexecution of the decision element 159 instructions causes the updatetime of the next, i.e. current, active data item table 65 entry to beexamined. When all of the active data item table 65 entries have beenexamined, then instruction execution proceeds to the source request taskof FIG. 6, as symbolized by the instruction sequence of connectorelement G 250.

Decision element 165 instructions test the time stamp for the data itemvalue in the current data item table 65 entry to determine whether theage of that data item value is within the valid data interval for thatdata item table entry. As mentioned earlier, this valid data intervalmay be the update interval from the update interval table 70 for thecurrent data item table entry, or may be derived from some other source.If the data item value in the current data item table 65 entry is valid(i.e. new enough), then instruction execution proceeds to activityelement 167 which sets an I1 index to specify the current data itemtable 65 entry. Execution then proceeds to connector element B 168 inFIG. 4B and the instructions of decision element 181. If theinstructions of decision element 165 determine that the data item valuein the current data item table 65 entry is not valid, then theinstructions which decision element 171 and activity element 176represent are executed next. These instructions search the data itemtable 65 for every other entry having the data item identity code (butnot the client 21-23 identity code) of the current entry. If found, theinstructions of activity element 171 in this case set the index I1 todesignate an entry for the data item identity code which has the latest(largest) time stamp value. The instructions of decision element 178cause processing unit 12 to test whether the time stamp value in theIlth entry of the data item table 65 is within the valid data timeinterval. If this time stamp value is within the valid data timeinterval, then instruction execution proceeds to connector element D 180and to decision element 183 on FIG. 4B. If the time stamp value of theIlth entry is prior to the valid data time interval, then it isnecessary to procure the data item value with which to answer the clientrequest message from which the current data item table 65 entry wasformed, from the appropriate data source 56-58. This means thatinstruction execution must proceed to connector element 174.

Turning next to FIG. 4B, when the test performed by the instructions ofdecision element 165 cause the path of execution to continue throughconnector element B 168, then the instructions of decision element 181are executed. These test whether the changed D.I.V. flag is set in thecurrent entry of the data item table 65 entry. If it is set, theninstruction execution continues with the instructions of activityelement 187, as indicated by the execution path to the connector elementat 185. (Recall that the changed D.I.V. flag is set when the data itemvalue has changed since the last time a client reply message for thatdata item table 65 entry was sent to the specified client 21-23.) If thechanged D.I.V. flag is not set, then the path of instruction executionpasses through connector element 189 to the instructions of decisionelement 190. The tests of decision elements 181 and 190 are needed tohandle the condition where there has been no change in the data itemvalue since the last time the client reply message was sent for thecurrent data item table entry and where the current data item tableentry timed reply flag is not set. This set of conditions means that aclient reply message is to be sent only if the data item value haschanged during the time interval from the end of the previous updateinterval, to the end of the current update interval. If the timed replyflag of the current data item table 65 entry is not set, theinstructions of decision element 190 cause the path of instructionexecution to return to decision element 163 in FIG. 4A through connectorelement A 152.

If all of the conditions for providing an immediate client reply messagehave been met, then instruction execution reaches the point of connectorelement 185 and the instructions which activity element 187 representsare executed. These instructions generate the signal on path 37 of FIG.1 encoding a client reply message to the client 21-23 whose identitycode is in the current data item table 65 entry. The data item value inthe client reply message is provided by the data item table 65 entryspecified by the I1 index, and may be either the current data item tableentry 65 or another data item table 65 entry having a suitably freshvalue for that data item. The sequence of instructions then continues toconnector element F 190 on FIG. 4C.

Connector element 190 symbolizes that the instructions of decisionelement 192 are next executed. These instructions test the cold linkflag of the current data item table 65 entry. The cold link flag has thevalue specified by the client request message, and when set indicatesthat only a single client reply message is to be sent in response. Ifthe cold link flag is set, the instructions of activity element 195,which delete the current entry from the data item table 65 are executed.The instructions which follow in the sequence of connector element A 152in FIG. 4A are next executed. If the cold link flag for the current dataitem table entry is not set, then the instructions of activity element197 are executed to update the parameters of the current data item table65 entry to reflect the changes resulting from issuing the client replymessage for the current data item table 65 entry. Executing theseinstructions stores in the current data item table entry, the data itemvalue and time stamp from the Ilth data item table 65 entry. Executingthese instructions also sets the next update time value in the currentdata item table entry to the sum of the update interval in the currentdata item table 65 entry and the current time available on path 50 fromclock 27. Executing the instructions of activity element 197 also setsthe changed data item value flag of the current data item table entry toits cleared condition. Then execution of instructions passes toconnector element A 152 in FIG. 4A.

The last of the functions performed by processing unit 12 in executingthe instructions for task 116 involve the situation where a new dataitem value from the data source is required and there is no active entrypresently in the request table 68 holding the index for the current dataitem table 65 entry. When this condition is detected by decisionelements 165, 171, and 178, then instruction execution proceeds to theinstructions starting with connector element C 174 in FIG. 4B. The firstof these, the instructions of decision element 192, cause processingunit 12 to search the request table 68 for an entry containing the dataitem identity code in the current entry of the data item table 65. Ifthis data item identity code is in request table 68, then this meansthat the previous processing of some entry in the data item table 65assigned to this data item has caused the current data item table 65entry's data item identity code to be placed in request table 68. It istherefore unnecessary to place a further entry for this data item inrequest table 68, since the source reply message for this data item willbe supplied before the source reply message will be available for arequest table 68 entry added at this time. This is one aspect of theinvention which in some circumstances allows substantial reduction oftraffic to and from gateway 53. One should note that it is entirelypossible that the current data item table 65 entry may be the source ofthe entry in request table 68 which has the current data item tableentry's data item identity code. This situation arises where the entryhas been placed in the request table 68 during an earlier scan of thedata item table 65 by the instructions of task 116, but gateway 53 hasnot yet responded with the answering source reply message.

If the instruction executions of decision element 192 do not find thedata item identity code from the current data item table 65 entry in arequest table 68 entry, then the instructions which activity element 196represent are executed. These instructions store the current time valueencoded in the signal on path 50 in an available request table 68 entryas the request time. The index for the current data item table 65 entryis stored in this request table 68 entry, and the request flag in thisrequest table entry is set. Instruction execution then continues withthe instructions of decision element 163 in FIG. 4A, which followconnector element A 152. Eventually all of the active data item table 65entries will be examined, and instruction execution proceeds toconnector element G 250 on FIG. 6, which is the flowchart for the taskwhose actions cause processing unit 12 to issue a new source requestsignal.

The software structure for source reply task 122 is shown in FIG. 5. Theinstructions which are symbolized in FIG. 5 are executed as a result ofthe interrupt which accompanies a source reply message. It should berecalled that the source reply message forming a part of source replysignal carried on path 42 in FIG. 1 is recorded in a standard locationor format in a memory element of source reply means 33, so as to beavailable as needed. The first of these instructions are represented bydecision element 215, and cause a search of the request table 68 entriesfor the data item table 65 index returned by gateway 53 in the datasource message. If this data item table 65 index cannot be found in anentry of request table 68, this means that the data item table entryspecified by the index has been deleted since the source request messageto which the current data source reply message is a response, was issuedto gateway 53. Instruction execution then proceeds to the instructionsof activity element 238 whose start is indicated by connector element235. The instructions of element 238 clear the pending request flag. Thepending request flag is set by the instructions of activity element 270in FIG. 6 in conjunction with issuing a source request signal on path43. The pending request flag remains set whenever a source requestsignal has been issued but not yet answered by the related data sourcereply signal. When the pending request flag is set, a source requestsignal will not be issued.

If the data item table index in the data source reply message is foundin an entry of request table 68, then the instructions of decisionelement 220 are executed next. These instructions cause processing unit12 to test the data item value in the data source message against thedata item value recorded in the data item table 65 entry specified bythe data item table index in the data source message. If these two dataitem values are equal, instruction execution continues with theinstructions starting at connector element 227, i.e., the instruction ofactivity element 228. If the two data item values are unequal, executioncontinues with the instructions of activity elements 223 and 225.Executing the instructions of activity element 223 sets the changed dataitem value flag in the data item table entry specified by the data itemtable index in the data source message. Setting this flag indicates thatthe data item value in this data item table 65 entry is different fromthe previous value. This flag is used to limit the issuance of clientreply messages to occur only when the data item value changes, and thisoption is selected by the client request message.

Executing the instructions of activity element 225 sets the data itemvalue in the entry specified by the data item table index in the datasource message, to the data item value in the data source reply message.The instructions of activity element 228 are next in line to beexecuted.

The instructions of activity element 228 update the time stamp value inthe data item table 65 entry specified by the data item table index inthe data source message, to the current time encoded in the signal onpath 50. The instructions of activity element 231 are executed in orderto delete the entry in request table 68 which holds the data item tableindex in the data source reply message. Then the instructions ofactivity element 238 are executed, as shown by the flow line toconnector element 235. After these instructions have been executed, thenprocessing continues with the instructions of activity element 127 inFIG. 2, which release the interrupt lockout set earlier by theinstructions of activity element 100. After the instructions of activityelement 127 have been executed, execution continues to FIG. 6 and theinstructions following connector element G 250.

The instructions symbolized by the elements of FIG. 6 cause any sourcerequest message required by the presence of one or more active entriesin request table 68 to be issued. First of all, the instructions ofdecision element 253 test the value of the pending request flag, and ifset causes an exit from this function to the previous task, assymbolized by the flow line to connector element 275. Recall that theprotocol adopted here is that each source request message must beanswered with a source reply message before another source requestmessage is issued. The pending request flag is set whenever a sourcerequest message has been issued, but not answered.

If the pending request flag is not set, then the instructions symbolizedby activity element 260 are executed. These instructions search therequest table for the entry having the smallest (i.e., oldest) requesttime value. The data item table index in this request table entry isused to designate a data item table 65 entry, and the data item identitycode in that entry is used to identify the data source and data item ina source request message which is sent to gateway 53 on path 43. Issuinga new source request message makes it necessary to again set the pendingrequest flag, and executing the instructions of activity element 270causes this action. No more source request messages will be sent untilthe present one is answered because of the presence of the instructionsof decision element 253. In a commercial embodiment, there will likelyneed to be some time out interval specified after which it will beassumed that gateway 53 has failed to properly respond to a sourcerequest message, but this feature is conventional and also beyond thescope of this invention.

The embodiments of an invention in which an exclusive property or rightis claimed are defined as follows:
 1. An improvement in a communicationsystem for supplying values provided by at least one data source for aplurality of data items each having assigned to it, its own data itemidentity code and each data item having its value available from asingle data source, to each of a plurality of clients each having itsown client identity code, each client supplying on a client data link,client request signals encoding a data item identity code and the clientidentity code and receiving on the client data link, client replysignals encoding values of data items in association with the respectivedata item identity codes thereof, said communication system including aserver comprising i) a processing unit connected to at least one clientdata link and at least one source data link, and ii) a data memory inwhich data may be recorded and retrieved by the processing unit and inwhich may be recorded by the processing unit a data item tablecomprising a plurality of entries where in each entry may be recorded aclient identity code, a data item identity code, and a data item valueand wherein each data item table entry is designated by an identifier,and wherein each said data source is connected to a source data linkallowing two way communication between the data source and theprocessing unit, each said data source providing a source reply signalto the server on the source data link to which it is connectedresponsive to a source request signal provided on the source data linkby the processing unit, each said source request signal encoding a dataitem identity code, and said source reply signal encoding a value forthe data item whose identity code was encoded in the source requestsignal for which the source reply signal is the response, wherein theprocessing unit includes the improved apparatus comprising:a) clientrequest means connected to a client data link and receiving clientrequest signals thereon, for recording in a data item table entry for aclient request signal, the identity code for the client supplying thatclient request signal and the identity code of the data item in thatclient request signal; b) source request means connected to apreselected source data link and receiving from the data memory, thedata recorded in selected entries in the data item table, for issuingsource request signals to a data source on the preselected source datalink, said source request signals encoding the data item identity codesrecorded in the selected data item table entries; c) a clock providing aclock signal encoding a time value comprising the current time of daywherein the source reply means further comprises means receiving theclock signal; d) source reply means connected to each source data linkand receiving the source reply signals therefrom, and connected to theclock and receiving the clock signal therefrom, i) for recording in anentry in the data item table in which is recorded the data item identitycode encoded in the source request signal for which each source replysignal is a response, the data item value encoded in that source replysignal, and ii) for recording in the data item table in the entry whosedata item value is provided by a source reply signal, a time stamp valueequal to the time value encoded in the clock signal at the time thatsource reply signal was received; e) client reply means connected toeach client data link, for scanning the data item table, and for issuinga client reply signal on a client data link to at least two of theplurality of clients, each client reply signal encoding data item valueand the data item identity code recorded in an entry of the data itemtable and wherein each client reply signal is provided to a client whoseidentity code is recorded in a data item table entry in which the dataitem identity code encoded in the client reply signal is also recorded;f) data item selection means for selecting a data item table entry inwhich is recorded a time stamp value; and g) valid time means receivingthe valid interval signal and the clock signal for calculating a validdata time value as a function of i) the time stamp value recorded in theselected data item table entry and ii) the valid data time intervalencoded in the valid interval signal, and for issuing a client replysignal encoding the data item value recorded in the selected data itemtable entry responsive to the valid data time value exceeding the timevalue in the clock signal.
 2. The communication system of claim 1,wherein the data item selection means comprises means for issuing aselection signal encoding the identifier designating the selected dataitem table entry; wherein the valid time means includes means forissuing an invalid data signal having a preselected value responsive tothe time value in the clock signal exceeding the valid data time value;and wherein the source request means includes means receiving theselection signal and the invalid data signal, for issuing a sourcerequest signal encoding the data item identity code in the data itemtable entry designated by the identifier encoded in the selection signalresponsive to the preselected value of the invalid data signal.
 3. Thecommunication system of claim 1, wherein the data item selection meansincludes means for selecting at least two data item table entries havingrecorded therein equal data item identity codes; and wherein the validtime means includes means for calculating for each of the selected dataitem table entries a valid data time value equal to the sum of i) thetime stamp value recorded in the data item table entry and ii) the validdata time interval encoded in the valid interval signal, and forincluding in the client reply signal the data item value from theselected entry whose valid data time value is larger than that of anyother selected entry and larger than the time value in the clock signal.4. The communication system of claim 3, wherein the data item selectionmeans comprises means for issuing a selection signal encoding anidentifier designating the selected data item table entry; wherein thevalid time means includes means for issuing an invalid data signalhaving a preselected value responsive to the time value in the clocksignal exceeding each of the valid data time values; and wherein thesource request means includes means receiving the selection signal andthe invalid data signal, for issuing a source request signal encodingthe data item identity code recorded in the data item table entrydesignated by the identifier encoded in the selection signal responsiveto the preselected value of the invalid data signal.
 5. Thecommunication system of claim 4, wherein the source reply meanscomprises means for recording the data item value encoded in the sourcereply signal in the data item table entry designated by the identifierencoded in the selection signal which designated the data item tableentry from which was retrieved the data item identity code in the sourcerequest signal to which the source reply signal is the response.
 6. Thecommunication system of claim 4, wherein the client request meansfurther comprises means receiving a plurality of client request signalseach encoding an update interval, for recording the update interval inthe data item table entry for that update interval's client requestsignal; wherein the data item selection means includes means forselecting a data item table entry in which is recorded an updateinterval and in which is recorded an update time value smaller than thetime value encoded in the clock signal, and means for thereafter settingthe update time value equal to the time value encoded in the clocksignal plus the update interval; wherein the valid interval meanscomprises means for encoding as the valid data time interval in thevalid data time signal, the update interval in the selected data itemtable entry.
 7. The communication system of claim 1, wherein the validtime means further comprises means responsive to the condition of thetime value encoded in the clock signal exceeding the valid data timevalue, for scanning a plurality of the data item table entries, forcomparing the time stamp values for each entry having a data itemidentity code equalling the data item identity code in the selected dataitem table entry, and for issuing a client reply signal encoding thedata item value recorded in the entry having the largest time stampvalue.
 8. The communication system of claim 1, wherein the client replymeans further comprises request table update means responsive to thetime value in the clock signal exceeding the valid data time value, forrecording in an entry of a request table held in a preselected portionof the data memory, the identifier of the selected data item tableentry, and wherein the source request means comprises means forselecting a request table entry, and for issuing on the source data linkto a data source a source request signal encoding a data item identitycode recorded in the data item table entry designated by the data itemtable entry identifier recorded in the selected request table entry. 9.The communication system of claim 8, wherein the source reply meanscomprises means receiving the current source reply signal, andresponsive thereto, for retrieving the request table entry in which isrecorded the data item table identifier designating the data itemidentity code encoded in the source request signal to which the currentsource reply signal is the response, and for recording the data itemvalue encoded in the source reply signal, in the data item table entrydesignated by the data item table entry identifier in the retrievedrequest table entry.
 10. The communication system of claim 9, whereinthe processing unit includes means for activating the source requestmeans responsive to a source reply signal.
 11. The communication systemof claim 8, wherein the client reply means further comprises means forrecording the time of day value encoded in the clock signal as a requesttime value in the request table entry in association with the data itemtable entry identifier, and wherein the source request means includesmeans for selecting the request table entry having the smallest requesttime value.
 12. The communication system of claim 8, wherein the clientreply means includes means for recording the identifier of the selecteddata item table entry in the request table responsive only to inequalitybetween the identifier for the selected data item table entry and eachof the data item table entry identifiers recorded in the request tableentries.
 13. The communication system of claim 8, wherein the valid timemeans further comprises means for selecting a plurality of data itemtable entries having equal data item identity codes, and for calculatinga valid data time value for each of said selected entries, each saidvalid data time value for an entry equal to the time stamp valuerecorded in the entry plus the valid data time interval, and responsiveto the largest valid data time value exceeding the time value in theclock signal, issuing a client reply signal encoding the data item valuerecorded in the data item table entry having the largest time stampvalue, and wherein the request table update means further records in therequest table, the identifier of a selected data item table entryresponsive to the time value in the clock signal exceeding said largestvalid data time value.
 14. The communication system of claim 13, whereinthe processing unit includes means for activating the source requestmeans responsive to a source reply signal.